#ifndef VTRANSLATE_H
#define VTRANSLATE_H

#include <QString>
#include <QMap>
#include <QChar>

class VTranslate
{
public:
    VTranslate(){}

    QString get_en_word(QString word);
    QString get_cn_word(QString word);

    QString get_en_text(QString document);
    QString get_cn_text(QString document);

    void en_cn_map_clear();
    void cn_en_map_clear();
    void en_cn_map_append(QString key, QString value);
    void cn_en_map_append(QString key, QString value);
    void en_cn_map_append_keyword();
    void cn_en_map_append_keyword();
    void set_remap();

    bool en_cn_map_contains(QString key);
    bool cn_en_map_contains(QString key);

    void set_qutation_skip(bool enable);
    void set_comment_skip(bool enable);

//    uint _count;
    QMap<QString, QString> _cn_en_map;
    QMap<QString, QString> _en_cn_map;

    static QChar s63_to_qchar(QString s);
    static QString dec_to_s63(uint n);
    static QString encode_string63(QString s);
    static QString decode_string63(QString s);
    static QString decode(QString text);
private:

    int _pos = 0;
    int _document_length = 0;
    QString _document;
    void init(QString text);

    bool _qutation_skip = true;
    bool _comment_skip = true;

    void quotation_skip(QChar type);
    void multiple_line_comment_skip();
    void line_comment_skip();
    QChar prefix_char();
    bool is_legal_char(QChar word);
    QString next_block_str();
};

#endif // VTRANSLATE_H
